pub mod file_task;
pub mod http_task;
pub mod udp_task;

// 任务特征，所有任务都应实现此特征
pub trait AsyncTask: Send + 'static {
    // 启动任务，返回一个可以用于停止任务的句柄
    fn start(
        self,
        stop_rx: tokio::sync::watch::Receiver<bool>,
    ) -> tokio::task::JoinHandle<Result<(), Box<dyn std::error::Error + Send + Sync>>>;
}
